# 修改默认编码
from typing import Optional
from typing import List
import pytest_study
import yaml


# def pytest_collection_modifyitems(session, config, items: list):
#     for item in items:
#         item.name = item.name.encode('utf-8').decode('unicode-escape')
#         item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')


def pytest_runtest_setup(item: "Item") -> None:
    print("hook : setup")


def pytest_runtest_teardown(item: "Item", nextitem: Optional["Item"]) -> None:
    print("teardown")

# 1、修改默认编码格式
def pytest_collection_modifyitems(
        session: "Session", config: "Config", items: List["Item"]
) -> None:
    print(items)
    for item in items:
        item.name = item.name.encode('utf-8').decode('unicode-escape')
        item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
    items.reverse()

# 2、添加命令行参数
# 定义一个命令行参数
def pytest_addoption(parser):
    mygroup = parser.getgroup("hogwarts")  #group 将下面所有的 option 都展示在这个group 下。
    mygroup.addoption("--env",  #注册一个命令行选项
         default='test',  #参数的默认值
         dest='env',     #存储的变量，为属性命令，可以使用option 对象访问到这个值，暂时不用
         help='set your run env' #帮助提示 参数的描述信息
         )

# 如何针对传入的不同参数完成不同的逻辑处理
# @pytest_study.fixture(scope='session')
# def cmdoption(request):
#     result = return request.config.getoption("--env")
#     return result

@pytest_study.fixture(scope='session')
def cmdoption(request):
    myenv = request.config.getoption("--env", default='test')
    if myenv == 'test':
        datapath = "datas/test/data.yml"
    elif myenv == 'dev':
        datapath = "datas/dev/data.yml"

    with open("datapath") as f:
        datas = yaml.safe_load(f)
    return myenv,datas
